iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
Modern Web

Hugo 貼身打造個人部落格系列 第 8

Day 08. Hugo Config 介紹

  • 分享至 

  • xImage
  •  

前言

Hugo 提供你透過設置 Config 的方式,讓我們基本上不用動到程式就可以操控你的整個網站,今天來講一下關於 Hugo Config 的基本功能。

Config 默認值

這邊有列出所有屬於官方定義的配置參數,有些參數帶有括號的,表示該參數本身若無配置,則代入括號中的值做為預設配置,例如:

canonifyURLs (false)

此參數設置影響的是若你想把站點內網址,從相對網址 /a/url,轉為絕對網址 http://your.baseurl.dev/a/url,你必須追加 canonifyURLs: true 配置到你的 config 檔案中,否則會使用預設的 false (不轉換)。

Config File 格式

Hugo 預設會在你的 site root 資料夾底下找尋 config.tomlconfig.yaml、或是 config.json 作為專案配置檔,目前初始化產生的檔案格式預設都是 .toml

Config 套用順序

當你專案目錄底下有數種 Config 格式時,Hugo 會以下列順序套用配置檔案:

./config.toml
./config.yaml
./config.json

Config 指定

你可以在執行 hugo server 時指定要用哪個 config,例如:

hugo --config sandbox.toml

Config 切換運用

一開始專案只會用一個 config.toml 去設置所有的配置,若有一天你需要更靈活的配置,可以將執行環境分成 production、staging 等,用區分環境的方式套用不同的配置,而且你可以將每個配置項目在拆解成數份檔案,放到 configDir 底下 (預設為 config/),例如我想要的配置有:

# sample config

...
[permalinks]
  post = "/:year/:month/:slug/"
  page = "/:slug/"
...

你可以拆成:

├── config
│   ├── _default
│   │   ├── config.toml
│   │   ├── permalinks.toml

若需要分成不同語系 (以 menu 選單為例):

├── config
│   ├── _default
│   │   ├── menus.en.toml
│   │   ├── menus.zh-tw.toml

假設整個配置資料結構是這樣:

├── config
│   ├── _default
│   │   ├── config.toml
│   │   ├── permalinks.toml
│   │   ├── menus.en.toml
│   │   ├── menus.zh-tw.toml
│   ├── production
│   │   ├── config.toml
│   │   ├── permalinks.toml
│   └── staging
│       ├── config.toml
│   │   ├── permalinks.toml

當你執行以下指令,他會合併 _default + staging 的所有配置 (且會以 staging 優先):

hugo --environment staging

在沒有任何配置資料結構的情況下,執行 hugo serve 等同於執行以下指令:

hugo --environment develoment

執行 hugo (不指定使用環境時) 等同於執行:

hugo --environment production

小結

Hugo 讓我們在使用配置上有「多種套餐」混用搭配,你可以選擇一鍋全部搞定,也可以按照自己的習慣分門別類,或是區分更多不同的執行環境;

另外,官方介紹 Config 的文件還有一些沒提到的部分,例如:

  • 如何 .Site.Params 設置運用 (參考)
  • 打包站台時,指定特定字不要渲染 (參考)
  • ...等等

有興趣的朋友可以到官網查閱。

參考連結


上一篇
Day 07. Hugo Theme Tranquilpeak
下一篇
Day 09. Hugo Config 配置經驗談
系列文
Hugo 貼身打造個人部落格30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言